package kr.hyunist.androidcomplete02saeildamil.ch20;

import android.app.*;
import android.os.*;
import android.view.*;
import android.widget.*;

public class WordListFragment extends ListFragment {
	OnWordChangedListener mHost;
	
	/*public interface OnWordChangedListener {
		public void onWordChanged(int index);
	}*/
	
	//onAttach
	//액티비티에 프래그먼트가 처음 부착할때 호출된다. 인수로 전달되는 activity는 프래그먼트가 배치되는 호스트 액티비티이다.
	//프래그먼트는 홀로 사용될수 없고 항상 액티비티이 한 부분으로 사용되는데 인수로 전달된 activity가 바로 주인 액티비티이다.
	//이 인수를 따로 저장하지 않더라도 프래그먼트의 getActivity 메서드로 다시 조사할 수 있으므로 
	//프래그먼트는 액티비티의 모든 공개 멤버를 언제든지 사용할 수 있는 셈이다.
	
	//즉, 부착될 액티비티로 단어가 바뀌었다는 신호를 보내줌.
	@Override
	public void onAttach(Activity activity) {
		super.onAttach(activity);
		
		try {
			//mHost는 프래그먼트가 붙을 액티비티를 가지고 있음
			mHost = (OnWordChangedListener) activity;
		} catch(ClassCastException e) {
			throw new ClassCastException("activity must implement OnWordChanged!");
		}
	}
	
	//onActivityCreated
	//액티비티가 완전히 초기화되고 프래그먼트의 레이아웃도 완성되었을 때 호출된다. 
	//초기화가 완료된 상태이므로 이 메서드에서 뷰의 상태를 복구하는 등의 초기화를 안전하게 수행할 수 있으며
	//액티비티의 다른 위젯도 참조하거나 조작할 수 있다.
	@Override
	public void onActivityCreated(Bundle savedInstanceState) {
		super.onActivityCreated(savedInstanceState);
		setListAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, ListFragmentTest.WORDS));
		
		getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
	}

	@Override
	public void onListItemClick(ListView l, View v, int position, long id) {
		//super.onListItemClick(l, v, position, id);
		//String toast = ListFragmentTest.WORDS[position] + " : " + ListFragmentTest.DESC[position];
		//Toast.makeText(getActivity(), toast, 0).show();
		
		l.setItemChecked(position, true);
		
		mHost.onWordChanged(position);
	}
	
}
